home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / LGP250S1.ZIP / src / libgplus.5 / libgplus / news < prev    next >
Text File  |  1993-10-24  |  23KB  |  524 lines

  1. *** Major changes in libg++ version 2.5:
  2.  
  3. * The iostream directory is gone.  It has been replaced by ../libio.
  4. The latter is a major re-write.  Two major changes is that libiostream.a
  5. (which is built in ../libio) can be used indendently of libg++,
  6. which is interesting because you may find its licensing conditions
  7. less onerous.  See ../libio/README.
  8.  
  9. Also, the guts of the code has been re-written in C instead of C++.
  10. This is so that you can build a C stdio implementation without
  11. a C++ compiler (as was needed before).  However, this is not 100% done.
  12.  
  13. * There is (preliminary) iostream manual (in ../libio/iostream.texi).
  14.  
  15. * The files in libg++/g++-include are now obsolete.  Instead, it
  16. is the compiler's responsibility to generate "fixed" copies of your
  17. existing C header files (such as /usr/include/stdio.h).  These copies
  18. (together with a g++ compiler modification) provide C++ access
  19. to the standard C library.  See the fixproto script in the gcc-2.5
  20. distribution.
  21.  
  22. *** Major changes in libg++ version 2.4:
  23.  
  24. * The configuration scheme has been largely re-vamped.
  25. Instead of the definitions that are common to all (or many) of
  26. the Makefiles being duplicated in each Makefile.in, they have
  27. now been moved into a shell script libg++/config.shared, which
  28. generates these standard definitions and rules.
  29.  
  30. Most of libg++/tests/Makefile, which had a lot of regularity,
  31. is now generated by the libg++/tests/Makefile.sh shell script.
  32.  
  33. Also libg++ no longer uses configure's 'subdirs' mechanism.
  34. Instead, it uses the 'configdirs' mechanism that most Cygnus
  35. packages use.  This means that each directory has its own
  36. configure.in, and each directory can be independently re-configured.
  37.  
  38. * Lots of fixes have been made so libg++ can be compiled by compilers
  39. other than g++ (specifically cfront), though there are still lots of
  40. warnings.  You may still have to edit some Makefiles etc; this
  41. will probably become easier in the next release.  Many of the
  42. changes involved not depending on g++ extensions.  However, some changes
  43. turned out to be that libg++ was depending on bugs in g++'s overload
  44. resolution.  These bugs in g++ are being fixed; this will cause some
  45. difficulties for libg++.  In some cases, we have decided that the
  46. cleanest fix is removing some libg++ functionality.  Specifically,
  47. the coersions Integer::operator long and Integer::operator double
  48. have been replaced by explicit methods Integer::as_long and
  49. Integer::as_double.  This means you may need to change your code.
  50. Please let us know if this is problematial.
  51.  
  52. *** Changes in libg++ version 2.3:
  53.  
  54. * iostream classes use multiple inheritance and virtual base classes.
  55. This is a little more complicated and slightly less efficient,
  56. but saves a slight amount of code duplication.  More importantly,
  57. it improves compatibility with other iostream implementations.
  58.  
  59. * A few of pseudo-template classes have been converted to use
  60. real templates.  The style used emphasizes sharing code for
  61. multiple template instatiations at the cost of somewhat more
  62. complex internal logic.  No promise is implied about when/if
  63. the remaining ones will be converted.  Using the template classes
  64. assumes gcc-2.3 or similar compiler.
  65.  
  66. * Added stdiobuf class which provides a streambuf wrapper around
  67. a stdio (FILE*).  This can be useful when mixing C and C++ code.
  68.  
  69. * streambuf sputn/sgetn virtuals have been made renamed to xsputn/xsgetn,
  70. and sputn/sgetn addedas inline methods.  This change is to be compatible
  71. with AT&T and ANSI; it could require changes to user code if you have
  72. written your own streambuf sub-classes.
  73.  
  74. * New utils/c++-mode.el (for editing C++ in emacs).
  75.  
  76. * Lots of little fixes all over.
  77.  
  78. *** Changes in libg++ version 2.2:
  79.  
  80. * Accurate input and output of floating-point numbers
  81.  
  82. * 'make clean' and its variants have been made more consistent.
  83.  
  84. * Improved portability (SVR4, NeXT, ...)
  85.  
  86.  
  87. *** Changes in libg++ version 2.1:
  88.  
  89. * "Class" include files in g++-include moved to src
  90.  
  91. Those include files that are just wrappers around C header files
  92. (e.g. signal.h) remain in g++-include, while the header files
  93. that are specific to libg++ (or C++) have been moved to src.
  94. If your system includes "C++-ready" C header files (as in SVR4 or
  95. Linux), you don't need to use the wrappers in g++-include.
  96.  
  97. * Portability
  98.  
  99. A lot of effort has gone into making libg++ more portable.
  100. Code that depends on internals of "traditional" implementations
  101. had been made more portable.  The 'libiberty' library is incorporated
  102. into libg++; this supplies (if needed) many functions that may be
  103. missing on particular hosts.
  104.  
  105. * Auto-configuration
  106.  
  107. New scripts automaticly figure out various properties of the
  108. system (and compiler) you use.  While these scripts are not
  109. foolproof, the intent is that on most systems you will no longer
  110. have to edit Makefiles or build special configuration files.
  111.  
  112. * Iostream bug-fixes
  113.  
  114. There have been numerous bug-fixes and enhancements in the
  115. iostream code.  Lots of rough edges in the streambuf and filebuf
  116. classes have been fixed.
  117.  
  118. There are still some rough edges of the protocol (as in what the
  119. streambuf class should do, and what sub-classes such as filebuf
  120. should handle).
  121.  
  122. * iostream enhancements for lexing/parsing.
  123.  
  124. You can now create a 'streammarker' object, which is a "remembered"
  125. position is a streambuf.  Later, you can backtrack to that position.
  126. This is supposed to work, even if the streambuf is unbuffered and
  127. otherwise unseekable, because the streambuffer never throws away
  128. any data following an extant streammarker.  This feature will be
  129. used to build various scanning/parsing facilities (with backup).
  130. (See iostream.texi for an example.)
  131.  
  132. * stdio library
  133.  
  134. Now supports all of ANSI's functionality.
  135.  
  136. *** Changes in libg++ version 2.0:
  137.  
  138. * iostream classes
  139.  
  140. The major change is that input/output uses the new iostream library.
  141. The design is based on (but not identical to) iostreams from
  142. AT&T C++ release 2.x, and the ANSI X3J16/WG21 draft C++ standard.
  143.  
  144. The iostream classes replace the old stream.  The new
  145. package provides some compatibility hooks.  Including the
  146. obsolete <stream.h> (or defining _STREAM_COMPAT) makes 
  147. more obsolete methods and features available.  However,
  148. you will probably have to change your code if you have used
  149. any libg++-specific extensions (such as the File class).
  150.  
  151. If you want stick with the old stream classes, change the
  152. definition of IO_DIR in Make.defs (to old-stream).  You will
  153. also need to 'make depend' in directories that contain depend,
  154. and then re-configure everything.  Note that the old-stream
  155. classes are *not* supported and *will* go away in a future release.
  156.  
  157. * Use g++ version 2 features (if available)
  158.  
  159. The main one is that an include file g++-include/FOO.h
  160. that is a wrapper for a standard C include file will now
  161. #include_next <FOO.h> instead of #include "/usr/include/FOO.h".
  162. This provides more flexibility wrt to using alternate C libraries
  163. (such as GNU libc), but it is not without its own problems.
  164. For example, if you compile libg++.a with a g++ that has old
  165. incompatible g++-include files in its path, these will be
  166. read (and then in turn read the /usr/include file).  If there
  167. are conflicts, you can remove the previously installed include files,
  168. or try something like 'make XTRAFLAGS=-I/usr/include' (or whatever
  169. include path gcc uses by default).
  170.  
  171. * Major Makefile changes.
  172. You can now 'make' from any subdirectory.
  173.  
  174. * Use of 'configure'.
  175.  
  176. * Copyrights changed to use the Library license version 2.0.
  177. (Some files have not been updated yet; we'll try to finish it for 2.1.)
  178.  
  179. * The prototype class SplayNode was put into a separate include file
  180. (g++-include/gen/SplayNode.hP).  This is to avoid duplication.
  181. It will require you to generate the approriate SplayNode file
  182. if you use SplayBag, SplaySet, or SplayPQ.
  183.  
  184. * You can now use inline functions in header files without
  185. having to use either -O or _DUSE_LIBGXX_INLINES.  (The #ifdef
  186. that depended on these has been removed, so inline functions
  187. are inline independent of -O).
  188.  
  189. * Numerous minor bug-fixes and enhancements.
  190.  
  191. *** Changes in libg++-1.39.0 from libg++-1.37.0
  192.  
  193.     * All files use the new g++ #pragma interface / #pragma implementation
  194.       convention, which minimies duplication of `outlined' inlines
  195.       and vtables. This also causes no inlines to be used at
  196.       all when not compiling with `-O', which speeds compilation
  197.       and simplifies debugging.
  198.  
  199.     * Many .h header file names had to be shortened so as to simulaneously
  200.       work with SYSV and with #pragma interface (since .h and .cc file
  201.       base names must match.) Sorry!
  202.  
  203.     * All genclass-able files have been moved to g++-include/gen.
  204.  
  205.     * various and sundry bug fixes, minor enhancements, and/or portability 
  206.         improvements as described in the ChangeLog. 
  207.  
  208. *** changes from libg++-1.36.3 to libg++-1.37.0
  209.  
  210.     * Most utility classes and functions are now in stand-alone .cc and/or .h
  211.       files. This should generate smaller exectuables, and, sometimes
  212.       faster compilation. In particular, istream.h, and ostream.h are
  213.       now separately includable. If you only need one, you don't have
  214.       to get the other.
  215.  
  216.     * The Plex classes now understand `const'. The `changes' and `changed'
  217.       member functions were removed, since it is now possible to
  218.       avoid changes in Plex structures by using const versions.
  219.  
  220.     * class RandomInteger is available, courtesy of John Reidl.
  221.  
  222.     * PlotFile3D, a 3D plot class is in libg++/etc. It will be
  223.       incorporated into libg++ proper for the next release, perhaps
  224.        with a few changes. Thanks to Tom Ngo.
  225.  
  226.     * various and sundry bug fixes, minor enhancements, and/or portability 
  227.         improvements as described in the ChangeLog. 
  228.  
  229.     * The file etc/HINTS is an emacs RMAIL file that contains recent
  230.         bug-lib-g++ list mail and related messages that may be useful.
  231.  
  232.  
  233. *** changes from libg++-1.36.1 to libg++-1.36.3
  234.  
  235.     * `Tmp' classes have been eliminated from Strings, Integers, etc.
  236.        (Via some retuning of the main classes, Tmp classes were found
  237.         to not significantly impact performance one way or the other,
  238.         so they were removed.)
  239.  
  240.     * There is now a version of malloc, directly supporting operator
  241.       new, etc. It may be faster and better suited to C++ applications
  242.       than your libc malloc. You should be able to use it unless you need
  243.       a special malloc for a distributed shared memory environment or
  244.       the like. If you can't use it, edit the appropriate flag in
  245.       the top-level Makefile. I would very much appreciate feedback
  246.       about whether this malloc makes any difference in time or space
  247.       efficiency than whatever you are now using.
  248.  
  249.     * By default, output is now line-buffered. Use the
  250.       NO_LINE_BUFFER_STREAMBUF define in the Makefile to override
  251.  
  252.     * Otherwise, the stream classes remain C++-1.2 compatible.
  253.       C++-2.0-compatible versions are still in the works.
  254.  
  255.     * various and sundry bug fixes, minor enhancements, and/or portability 
  256.         improvements as described in the ChangeLog. 
  257.  
  258. *** changes from libg++-1.35.0 & 1.35.1 to 1.36.1
  259.  
  260.     * various and sundry bug fixes, minor enhancements, and/or portability 
  261.         improvements as described in the ChangeLog. 
  262.  
  263.     * Most everything should now work on most SystemV machines. Let me
  264.         know if they don't.
  265.  
  266.     * genclass now allows an optional prefix to be used instead of type
  267.         name concatenation in order to help minimize filename
  268.         lengths for SYSV users. This is not a great solution, but
  269.         is A solution to filename length problems for SYSV users.
  270.  
  271.     * Some, but not all classes now behave well with respect to 
  272.       the new 2.0 const specifications. Some uncertainties about
  273.       how g++ will interpret gcc-based const function qualifiers
  274.       (to indicate lack of side effects) versus C++-2.0 const member
  275.       functions has held up the conversion of some classes to use
  276.       const in either or both of these ways.
  277.  
  278.     * A version of etags suitable for use with c++ is in etc/
  279.         (courtesy of J. Clark)
  280.  
  281.     * `graph', a unix graph(1) work-alike is in libg++/etc, courtesy
  282.         of Rich Murphey.
  283.  
  284.     * RAVLMap (Ranked AVLs) prototypes.
  285.  
  286.     * The GetOpt class & support has been moved from etc/ into libg++.a
  287.  
  288.     * Streams have been redone to be nearly 100% AT&T 1.2 compatible.
  289.         One minor possible incompatibility exists (ostream<< char)
  290.         that can be eliminated via #define NO_OUTPUT_CHAR at the
  291.         top of stream.h. This is probably necessary in order to
  292.         compile et++. See libg++.texinfo for more details.
  293.  
  294.         The new stream implementation is not particulary pretty.
  295.         Its main virtue is that it avoids some of the worst things 
  296.         about both AT&T streams and old libg++ streams. A much
  297.         superior AT&T 2.0-iostream superset is in the works
  298.         for future release.
  299.  
  300. *** changes from libg++-1.25.0 to libg++-1.32.0
  301.  
  302.     * Nearly all data and methods previously declared as `private'
  303.         are now declared as `protected' to make subclassing from
  304.         library classes easier.
  305.  
  306.     * Most classes now contain a method `OK()' that checks to
  307.         make sure that an objects internal data is in a valid state.
  308.         See the documentation for further details
  309.  
  310.     * Mosts tests in ./tests now contain various kinds of assert
  311.         statements. If tests execute without assertion failures,
  312.         and without any other errors that cause aborted execution,
  313.         you may consider them successful. The test files now include
  314.         nearly all of my internal tests, which in turn have been
  315.         made more extensive.
  316.  
  317.     * Plex classes are available. 
  318.         A bit of propaganda about these:
  319.         Plexes are very attractive replacements for arrays
  320.         in many contexts. Try them!
  321.  
  322.     * `shrink' and `contains' have been added to Obstack
  323.  
  324.     * Files and streams have not yet been revamped (a complete
  325.         reworking awaits the AT&T 2.0 stream specification), but
  326.         have been adjusted to provide slightly faster IO in some 
  327.         cases, and now support the use of a user-supplied string 
  328.         to read or write from instead of an actual IO source.
  329.  
  330.     * Rationals are now normalized when input via `>>'.
  331.  
  332.     * atoI is fixed.
  333.  
  334.     * variable-length representations in String, Integer, etc., are
  335.         now completely different. See the documentation for details.
  336.  
  337.     * New String functions:
  338.        * readline -- read in a line from an istream as a String
  339.        * prepend -- prepend stuff to a String
  340.        * through  -- make a SubString from beginning to match point
  341.        * from     -- make a SubString from match point to end
  342.        * s[i]     -- now returns the char by reference
  343.  
  344.     * BitVec's are no longer supported, since their capabilities
  345.         are now incorporated in the revised BitString class.
  346.  
  347.     * stdarg.h and regex.h are revised to support the Sun4
  348.  
  349.     * Several interesting and/or useful examples of libg++
  350.         class use are in ./etc, mainly courtesy of Doug Schmidt.
  351.  
  352.     * .cc file names are now all less than 15 characters. Some
  353.         .h file names are longer, but this should not present
  354.         problems on SYSV systems.
  355.  
  356.     * pseudo-generic `proto' classes have been thoroughly revised:
  357.         * The prototype file names now end in `P', not `.proto'
  358.             and are in the g++-include directory
  359.         * A single, simple-to-use collection traversal mechanism
  360.             via pseudo-indices (`Pix') is used instead of particular
  361.             traversal friend classes.
  362.         * `Bag' prototypes are included
  363.         * Base classes are now supplied, so that all implementations
  364.             of Sets, Bags, are derived, allowing programmers to
  365.             mix and match implementations.
  366.         * They are now simpler to create: all comparison operators
  367.             and the like are now defined as macros in a `defs' file
  368.             which uses some reasonable defaults.
  369.         * The `Dictionary' versions of Set prototypes are not now
  370.             supported. Revised versions of such classes are forthcoming.
  371.         * Class prototypes previously labelled as `Assoc' are now
  372.             called `Maps', with slightly different capabilities.
  373.  
  374.     * Splay tree prototypes are available.
  375.         A bit more propaganda:  Consider using Splay tree
  376.         based containers (Set, Bag, Map, PQ). They are often
  377.         the most efficient structures when performing mixtures
  378.         of operations (adds, deletes, searches...)
  379.  
  380.     * Fixed precision reals are available, courtesy of Kurt Baudendistel
  381.  
  382.     * An ordered hash Set prototype (VOHSet) is available,
  383.         courtesy of Doug Schmidt.
  384.  
  385.     * MLCG now allows access and modifications to the seeds.
  386.  
  387.     * The Normal random generator is fixed.
  388.  
  389.     * SampleStatistic now allows any prob value for confidence
  390.         intervals.
  391.  
  392.     * some simple timer routines are in builtin.cc, courtesy of Doug Schmidt
  393.  
  394.     * While the Vec class prototypes are still available, they are
  395.         currently undergoing revision in order to correspond to
  396.         the forthcoming Matrix package (which should be available
  397.         in the next libg++ release).
  398.  
  399.     * A C++ version of GPERF, a perfect hash function generator
  400.        program is also available in ./etc, courtesy of Doug Schmidt.
  401.  
  402.  
  403. *** changes from libg++-1.22.2 to libg++-1.25.0
  404.  
  405.   * All reported errors from the previous release are fixed, and many
  406.     suggested modifications have been performed. Thanks to all who
  407.     have sent bug reports and comments, including those with mail
  408.     addresses that I have not been able to reply to. (My mail connections
  409.     are sometimes more than a little fragile. If you send me mail and
  410.     I have not replied within a few days, you may want to try again. Sorry.)
  411.  
  412.   * A serious problem in the use of Obstacks by conversion functions 
  413.     has been repaired.
  414.  
  415.   * A bug in maintaining reference counts on `find' and related operations
  416.     in List prototype classes has been fixed.
  417.  
  418.   * Strings now support self case manipulation in addition to the
  419.     functional versions.
  420.  
  421.   * Some new functions have been added to builtin.[h.cc]. All are now
  422.     documented in libg++.texinfo
  423.  
  424.   * Overload declarations are now performed in std.h and math.h,
  425.     rather than builtin.h,  to eliminate some include file ordering
  426.     problems.
  427.  
  428.   * Random, RNG, and SampleStatistic classes are available,
  429.     thanks to Dirk Grunwald.
  430.  
  431.   * A BitVec class is available.
  432.  
  433.   * The are many new generic container class prototype files. These
  434.     support container classes based on elementary data structures
  435.     (and a couple of non-elementary ones). Please read the documentation.
  436.  
  437.   * Class prototype OSet has been modified and renamed OLSet.
  438.  
  439.   * The genclass utility has been modified
  440.  
  441. *** changes from libg++-1.22.1 to 1.22.2
  442.  
  443.   * Tests files are now in a separate directory.
  444.  
  445.   * Several minor errors (Complex unary -, several BitString functions)
  446.     have been repaired.
  447.  
  448.   * pow(0,0) returns 1 for all versions of pow.
  449.  
  450.   * An experimental generic class prototyping feature is provided,
  451.     including prototypes for lisp-style lists and ordered list-based sets.
  452.  
  453.   * several include files with the same names as those in AT&T CC
  454.     are provided. These simply #include other files. OOPS should now
  455.     compile using only g++-include files. See, however, the note
  456.     about struct exception in file math.h
  457.  
  458.   * Some rearrangement of files containing char* conversion has been
  459.     done to eliminate linking of unnecessary classes.
  460.  
  461.   * The inline-only-when-optimizing feature is still not supported.
  462.  
  463. * New Random number generator classes are not yet available. Stubs for
  464.   these files are in this directory. They should be available for next
  465.   release.
  466.  
  467. *** changes from libg++-1.21.1 to 1.22.0
  468.  
  469.   * All documentation is in a stand-alone texinfo file, libg++.texinfo,
  470.     and is on its way to becoming a decent piece of documentation.
  471.  
  472.   * All reported errors from the previous release are fixed, and many
  473.     suggested modifications have been performed. Thanks to all who
  474.     have sent bug reports and comments, including those with mail
  475.     addresses that I have not been able to reply to. (My mail connections
  476.     are sometimes more than a little fragile. If you send me mail and
  477.     I have not replied within a few days, you may want to try again. Sorry.)
  478.  
  479.   * New Complex, BitSet, and BitString classes are available. You will
  480.     be performing a valuable service if you try these out and report
  481.     back any bugs/comments/suggestions about these or any other classes.
  482.  
  483.   * File `values.h' has been added. This contains various system
  484.     constants like the number of bits per long, etc. It contains
  485.     much of the same information as sun <values.h>, although a
  486.     few names and things differ slightly.
  487.  
  488.   * Files `builtin.h', `builtin.cc', and `convert.cc' have been added.
  489.     `builtin' contains common inline and non-inline functions on
  490.     builtin types (like `abs'). `convert' contains code for performing
  491.     IO and char* conversions, mainly via Obstacks. Most of these
  492.     functions are not new -- they have been collected from other .h
  493.     and .cc files.
  494.  
  495.   * Files `std.h' and `math.h' now declare all libc.a C functions 
  496.     in a way that allows any of them to be overloaded in C++.
  497.  
  498.   * Strings and Integers now perform expansion via realloc() -- 
  499.     see libconfig.h about whether you should #define SHOULD_FREE_TO_REALLOC.
  500.  
  501.   * `eatwhite' is supported for istreams.
  502.  
  503.   * File::getline(String, ...) and get(String) have been removed in order to
  504.     maintain greater independence of different classes.
  505.  
  506.   * Strings now provide substring matching via new versions of
  507.     `contains' and `matches', `common_prefix' and `common_suffix'.
  508.     Also, there is more support for case operations via `fcompare', etc.
  509.     The versions of `decompose' that do not deal with Regexes have
  510.     been deleted since they provide little functionality over other
  511.     operations. Also, a few special case functions dealing with char*'s
  512.     have been deleted since the required constructors are necessary
  513.     anyway. Several other corrections have been made in String.cc,
  514.     including the elimination of a few aliasing problems.
  515.  
  516.   * The implementations of Integers and Rationals are now both much
  517.     more efficient and well-tested, while remaining machine independent.
  518.     A few minor visible features have been added and/or changed.
  519.         
  520.   * The `box' command in PlotFile is now simulated, whether or not
  521.     it is present in libplot.a
  522.  
  523.   * The inlining-only-if-optimizing feature is still not fully implemented.
  524.